home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Just Call Me Internet
/
Just Call Me Internet.iso
/
prog
/
atari
/
m2
/
cat3src
/
cat
/
messages.d
< prev
next >
Wrap
Text File
|
1997-10-26
|
11KB
|
297 lines
DEFINITION MODULE Messages;
FROM SYSTEM IMPORT ADDRESS;
IMPORT data, CatTypes;
(* Erst mal ein paar Strings *)
TYPE distTextArray = ARRAY [data.dNone..data.dNet] OF ARRAY [0..10] OF CHAR;
CONST
msgDistr = 'Distr.: '+0C;
msgDNone = 'keine'+0C;
msgDLokal = '(lokal)'+0C;
msgDMausNet = '(MausNet)'+0C;
msgDNet = '(Net)'+0C;
msgDistribs = distTextArray{msgDNone, msgDLokal, msgDMausNet, msgDNet};
TYPE
msgNumberSet = SET OF [0..999];
MessageType = (comment, answer, mail, private, groupcomment, copyOwn, copyOther, forward, persanswer);
lineType = (dateL, receiverL, orgGroupL, groupL, refIdL, topicL, rIdL, rNameL);
shortInfo = RECORD
msgType : MessageType;
number : INTEGER;
copyCount : INTEGER;
refNum : INTEGER;
sendMsg : BOOLEAN;
toDelete : BOOLEAN;
dist : data.tDistribution;
size : LONGCARD;
noRefLine : BOOLEAN;
cDate : CARDINAL;
cTime : CARDINAL;
orgDist : data.tDistribution;
reserved1,
reserved2 : LONGCARD;
END;
msgInfo = RECORD
CASE : INTEGER OF
1 : info : shortInfo;|
2 : msgType : MessageType;
number : INTEGER;
copyCount : INTEGER;
refNum : INTEGER;
sendMsg : BOOLEAN;
toDelete : BOOLEAN;
dist : data.tDistribution;
size : LONGCARD;
noRefLine : BOOLEAN;
cDate : CARDINAL;
cTime : CARDINAL;
orgDist : data.tDistribution;
reserved1,
reserved2 : LONGCARD; |
END;
new : BOOLEAN;
hdrRead : BOOLEAN;
isSend : BOOLEAN;
selected: BOOLEAN;
CASE : CARDINAL OF
0 : strings : ARRAY [dateL..rNameL] OF CatTypes.Str1023Ptr; |
1 : date : CatTypes.Str1023Ptr;
receiver : CatTypes.Str1023Ptr;
orgGroup : CatTypes.Str1023Ptr;
group : CatTypes.Str1023Ptr;
refId : CatTypes.Str1023Ptr;
topic : CatTypes.Str1023Ptr;
rId : CatTypes.Str1023Ptr;
realName : CatTypes.Str1023Ptr;
END;
END;
msgInfoPtr = POINTER TO msgInfo;
msgArrayPtr = POINTER TO ARRAY [0..999] OF msgInfo;
diskArrayPtr = POINTER TO ARRAY [0..999] OF shortInfo;
VAR msgArray : msgArrayPtr;
messages : INTEGER;
maxMess : INTEGER;
usedNumbers: msgNumberSet;
PROCEDURE Number2Name (number : CARDINAL; VAR str : ARRAY OF CHAR);
(* Wandelt eine Msgnummer in einen Nachrichtendateinamen um
*)
PROCEDURE FileSize (REF path, name : ARRAY OF CHAR; VAR date, time: CARDINAL) : LONGCARD;
(* Holt die Dateigre und Erstellungsdatum und -uhrzeit einer Datei
*)
PROCEDURE FindMessage (number : INTEGER): INTEGER;
(* Liefert den internen Index der Nachricht mit der Nummer number
*)
PROCEDURE NewMessage(REF Gruppe, Wegen : ARRAY OF CHAR);
(* Eine neue Message anlegen und danach editieren *)
PROCEDURE NewKomMessage(REF fromGroup, Group, Wegen, RefId, txt, mId, To, RealName: ARRAY OF CHAR);
(* Einen Kommentar zu einer Gruppennachricht in
* eine andere Gruppe schicken.
*)
PROCEDURE NewAnsMessage(REF an, realName, fromGroup, Wegen, RefId, txt, mId : ARRAY OF CHAR);
(* Einen Kommentar zu einer Gruppennachricht an jemand
* persnlich schicken.
*)
PROCEDURE NewRegMsg(VAR number: INTEGER; VAR txtName : ARRAY OF CHAR);
(* Eine Registrierungsnachricht wird erzeugt
* Der Name der Textdatei wird zurckgegeben
*)
PROCEDURE UpdateFileSize (number: INTEGER);
(* Erzwingt ein Update der Nachrichtengre der Nachricht mit
* der Nummer number
* Wird nach NewRegMsg bentigt.
*)
PROCEDURE NewPersMsg (REF Empfaenger, RealName, Wegen : ARRAY OF CHAR);
(* Eine neue persnliche Nachricht an jemand schicken
*)
PROCEDURE NewKom(REF Nr, Wegen, gruppe, mId, To, RealName : ARRAY OF CHAR;
oldDist: data.tDistribution);
(* Einen Kommentar erzeugen
*)
PROCEDURE NewAnswer(REF Nr, Wegen, an, mId, RealName : ARRAY OF CHAR);
(* Eine Antwort erzeugen
*)
PROCEDURE SendState(REF Nr : ARRAY OF CHAR; NewState : CHAR);
(* Erstellt eine Statusnachricht fr die persnlichen Nachrichten,
* die man empfangen hat
*)
PROCEDURE CopyOrForwardMessage (REF Nr, To, RealName, comment : ARRAY OF CHAR; copy : BOOLEAN);
(* Erstellt eine Statusmeldung fr eine Kopie oder eine
* Weiterleitung
*)
PROCEDURE CopyOwnMessage (REF MailId, To, RealName, Comment : ARRAY OF CHAR; minNum: INTEGER);
(* Erstellt eine Kopie einer eigenen Nachricht
*)
PROCEDURE IsPrivateMessage (VAR internalId : ARRAY OF CHAR): BOOLEAN;
(* Gibt zurck, ob die Message eine private oder eine
* ffentliche Nachricht ist. Der Parser mu das beim Abarbeiten
* des Logfiles wissen, um evtl. private Nachrichten noch
* einfgen zu knnen.
*)
PROCEDURE MsgHasCopys (REF internalId: ARRAY OF CHAR): BOOLEAN;
(* Gibt zurck, ob die Nachricht Kopien hat oder nicht.
* Wenn es keine private Nachricht ist, dann wird immer FALSE
* zurckgegeben
*)
PROCEDURE ChangeMessage (REF internalId : ARRAY OF CHAR): BOOLEAN;
(* Wenn die Nachricht ein Kommentar oder eine Antwort ist,
* dann wird daraus eine entsprechende Nachricht mit Wildwestverkettung
* erzeugt, damit die Maus die beim nchsten Mal annimmt.
*)
PROCEDURE GetHdrInfos (REF internalId : ARRAY OF CHAR;
VAR refIdPtr, ToPtr, WegenPtr, ElinePtr,
longRefIdPtr : ADDRESS);
(* Gibt an den Parser die ntigen Informationen zurck,
* um eine persnliche Nachricht einzufgen
*)
PROCEDURE GetMsgFileName (VAR name : ARRAY OF CHAR);
(* Gibt an den Parser den Dateinamen zurck,
* unter dem die Nachricht gespeichert wurde,
* ohne Extension
*)
PROCEDURE DeleteMessage (REF internalId : ARRAY OF CHAR);
(* Lscht eine Nachricht wieder.
*)
PROCEDURE InitMessages();
(* Initialisiert die internen Strukturen des MessageManagers
*)
PROCEDURE SortMessages();
(* Sortiert die Nachrichten intern richtig
*)
PROCEDURE WriteHdrInfo (VAR msg : msgInfo);
(* Schreibt die Headerinformationen der Nachricht in die .HDR-Datei
*)
PROCEDURE ReadHdrInfo (VAR msg : msgInfo; externalRef: BOOLEAN);
(* Liest die Headerinformationen aus der MSGxxx.HDR-Datei ein
* ExternalRef: msg ist keine Referenz auf dem msgArray.
*)
PROCEDURE ReadMessageInfo();
(* Liest die MSGINFO.DAT ein
*)
PROCEDURE ReReadMessageInfo();
(* Liest die MSGINFO.DAT erneut ein
*)
PROCEDURE WriteMessageInfo(doRedrawWdw: BOOLEAN);
(* Schreibt die MSGINFO.DAT ein
*)
PROCEDURE MakeMausId (msg: msgInfo; VAR str : ARRAY OF CHAR);
(* Erzeugt eine ID, wie sie an die Maus geschickt wird.
* Format:
* CM###ddddd, ### ist die interne Messagenummer,
* ddddd ist das Datum und die Zeit im 36er System
*)
PROCEDURE CreateMessage (minNum : INTEGER; REF To, OrgGroup, Group, RefId, Topic, RealName : ARRAY OF CHAR;
type : MessageType; copyTo : CARDINAL;
REF crossLine : ARRAY OF CHAR;
REF oldMId : ARRAY OF CHAR;
oldDist : data.tDistribution;
openEditor : BOOLEAN;
VAR messIdx: INTEGER): BOOLEAN;
(* Erzeugt eine neue Nachricht, Oberfunktion fr alle neuen Nachrichten
* Sollte nicht benutzt werden, nur fr interne Benutzung
*)
PROCEDURE deleteMessage (REF internalId : ARRAY OF CHAR; killEdit: BOOLEAN;
changeState : BOOLEAN);
(* Lscht eine Nachricht, schliet ggf. die Editoren und ggf. Status von
* persnlicher Nachricht zurckstellen
*)
PROCEDURE DeleteMessage (REF internalId : ARRAY OF CHAR);
(* Nachricht mit dieser internen Id lschen. Ruft selber deleteMessage auf
*)
TYPE msgInfoType = (itReceiver, itOrgGroup, itGroup, itRid, itTopic, itMid, itRName);
PROCEDURE MsgEditGetInfos (wdw: INTEGER; info: msgInfoType; VAR str: ARRAY OF CHAR);
(* Gibt die gewnschten Infos zu dem Message-Editor wdw. Wenn die Information
* nicht vorhanden ist, dann wird ein leerer String geliefert
*)
PROCEDURE MsgEditorTop (wdw: INTEGER): BOOLEAN;
(* Liefert zurck, ob gerade ein Message-Editor das Topwindow ist,
* also ein Editor, der diesem Modul bekannt ist
*)
(*$H+*)
PROCEDURE openReference (idx: INTEGER);
(* ffnet die Referenznachricht
*)
(*$H=*)
PROCEDURE OpenEditor (VAR msg : msgInfo; new: BOOLEAN; num : INTEGER;
offset: INTEGER; forView: BOOLEAN);
(* ffnet einen CAT-Editor mit einer Nachricht drin
*)
PROCEDURE UpdateEditors (msg: msgInfo);
(* Aktualisiert die mit der Nachricht verbundenen Infozeilen der Editoren
*)
PROCEDURE SaveEditPos (VAR max: INTEGER);
(* Sichert die Positionen der Editoren
* Gibt die Anzahl der gesicherten Positionen zurck
*)
PROCEDURE CloseAllEditors (force: BOOLEAN): BOOLEAN;
(* Schliet alle Nachrichteneditoren
*)
PROCEDURE MsgAskForSave();
(* Fragt fr alle offenen Editorfenster mit Nachrichten und
* vernderten Texten nach, ob diese noch gesichert werden sollen.
* Sollte vor dem Erstellen des Infiles aufgerufen werden.
*)
PROCEDURE ReloadEditors ();
(* Aktualisiert nach dem Erstellen des Infiles alle
* offenen Editorfenster
*)
PROCEDURE InitMessages ();
(* Modul initialisieren. Kann auch wiederholt aufgerugen werden,
* dann werden die Strukturen neu initialisiert
*)
END Messages.